let shell = [];

for(let i = 0; i<8; i++){
  shell.push(Math.round(Math.random()*8 + 1));
}

console.log(shell);
shellSortFn(shell);
console.log(shell)

function shellSortFn(arr){
  let len = arr.length;
  let shellIndex = len;
  let index;
  let temp;
  while(shellIndex > 0){
    shellIndex = Math.floor(shellIndex / 2);
    if(shellIndex <= 0){
      break;
    }
    // console.log(shellIndex)
    for(let i = shellIndex; i < len; i++){
      /*
      *把i放在希尔增量处，为了是从后面开始与前面比较，通过 - shellIndex，就可以不断向前比较
      *能写少一个循环，如果每次i都从0开始，那每次都要再多一个循环与前面比较和交换
      */
      index = i - shellIndex;
      temp = arr[i];
      //找位置，并移位，之所以小于的时候才交换，是因为前面的已经排名序了，遇到小的时候就是找到了位置
      for(; index >= 0; index -= shellIndex){
        if(temp < arr[index]){
          arr[index + shellIndex] = arr[index];
        } else {
          break;
        }
      }
      arr[index + shellIndex] = temp;
    }
  }
}